﻿Public Class ObjektNetzwerkMenue
    Inherits ObjektKartenauswahlMenue



    ''' <summary>
    ''' Wird benutzt um den Button Weiter genau dann einmal zu erschaffen, wenn man sich neu verbindet.
    ''' </summary>
    ''' <remarks></remarks>
    Dim Beigetreten As Boolean = False


    Public Function IsSpielInizialiesiert() As Boolean
        Return SpielInizialiesiert
    End Function
   
    Public Sub New()
        MyBase.New(True)
        If DataSettings.Verhaeltnis = Hauptmenue.Breitbild Then
            Objektverwalter.LoadHintergrund(DataSettings.Resourcenpfad + "Backgrounds\MPHintergrundGross.png")
        Else
            Objektverwalter.LoadHintergrund(DataSettings.Resourcenpfad + "Backgrounds\MPHintergrund.png")
        End If

        CreateNetzWerkLobby()

        Hauptmenue.Chatroom = New Chat(True, Chat.Modus.Lobby)

        IniLobby()

    End Sub
    ''' <summary>
    ''' Erstellt das Lobby Objekt sowie die Verbindung zur Lobby oder unsere Host Verbindung her!
    ''' </summary>
    ''' <remarks></remarks>
    Public Shared Sub CreateNetzWerkLobby()
        If Hauptmenue.Lobby Is Nothing Then 'Just to stop Multilobbying
            Hauptmenue.Lobby = New BaseLobby()
        End If
    End Sub

    Public Overrides Sub Frame()
        MyBase.Frame()
    End Sub

    Public Overrides Sub KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)
        Select Case KAModus
            Case KAModi.Lobby, KAModi.SpielerAuswahl
                If Hauptmenue.Chatroom.Keydown(sender, e) Then Exit Sub
        End Select
        Select Case e.KeyCode
            Case DataSettings.Vor
                If KAModus <> KAModi.Lobby Then
                    btnWeiter()
                End If
            Case DataSettings.Zurueck
                btnZurueck()
            Case Else
                MyBase.KeyDown(sender, e)
        End Select
    End Sub

    Public Overrides Sub Malen()
        If KAModus = KAModi.SpielerAuswahl Then
            If DropDownMenues(0) IsNot Nothing Then
                DropDownMenues(0).SetToExistingItem(DropDownMenues(0).GetItem)
            End If
        End If

        MyBase.Malen()
        'Hauptmenue.NetzBefehlKartenauswahlSendenRegeln(Regeln)
        Select Case KAModus
            Case KAModi.Lobby
                If Hauptmenue.Lobby IsNot Nothing Then
                    Hauptmenue.Lobby.Malen()
                End If
                If Hauptmenue.Chatroom IsNot Nothing Then
                    Hauptmenue.Chatroom.Malen()
                End If
            Case KAModi.SpielerAuswahl
                If Hauptmenue.Chatroom IsNot Nothing Then
                    Hauptmenue.Chatroom.Malen()
                End If
        End Select

    End Sub

    Public Overrides Sub MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
        Hauptmenue.Lobby.MouseMove(sender, e)
        Select Case KAModus
            Case KAModi.Lobby, KAModi.SpielerAuswahl
                Hauptmenue.Chatroom.MouseEnter(sender, e)
        End Select
        MyBase.MouseMove(sender, e)
    End Sub

    Public Overrides Sub MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
        If Hauptmenue.Lobby.MouseDown(e) Then
            MyBase.MouseDown(sender, e)
            Select Case KAModus
                Case KAModi.Lobby, KAModi.SpielerAuswahl
                    Hauptmenue.Chatroom.MouseDown(sender, e)
            End Select
        End If
    End Sub

    Public Overrides Sub MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
        Hauptmenue.Lobby.MouseUp(sender, e)
        Select Case KAModus
            Case KAModi.Lobby, KAModi.SpielerAuswahl
                Hauptmenue.Chatroom.MouseUp(sender, e)
        End Select
        Dim Funktion As String = checkMouseUPObjekte(e.X, e.Y)
        Select Case Funktion.ToLower
            Case "Erstellen".ToLower
                btnHosten()
            Case "Beitreten".ToLower
                btnBeitreten()
            Case "weiter"
                btnWeiter()
            Case "bereit"
                KAModus = KAModi.StartBereit
                ResetSpielerAuswahl()
                Hauptmenue.NetzBefehlSenden(Net_Orders.Player_Ready)
                LoeschenButton("Weiter")
                LoeschenButton("Bereit")
                LoeschenButton("Zurueck")
                NeuButton(DataSettings.BildschirmBreite - 138, DataSettings.BildschirmHoehe - 30, DataSettings.Resourcenpfad + "Objects\Button.png", "Abbrechen", New PointF(1, 1))
            Case "abbrechen"
                KAModus = KAModi.SpielerAuswahl
                SpielerAuswahlErstellen()
                Hauptmenue.NetzBefehlSenden(Net_Orders.Player_Not_Ready)
                LoeschenButton("Abbrechen")
                LoeschenButton("Bereit")
                NeuButton(DataSettings.BildschirmBreite - 138, DataSettings.BildschirmHoehe - 30, DataSettings.Resourcenpfad + "Objects\Button.png", "Bereit", New PointF(1, 1))
                NeuButton(30, DataSettings.BildschirmHoehe - 30, DataSettings.Resourcenpfad + "Objects\Button.png", "Zurueck", New PointF(0, 1))
            Case "zurueck"
                btnZurueck()
            Case "karte senden"
                Hauptmenue.NetzDatenKartentransfer(0, True)
            Case "netzwerk"
                Hosten(True)
                btnWeiter()
            Case "internet"
                Hosten(False)
                btnWeiter()
            Case "ip"
                MessageBox.ShowMessageBox(Sprachconverter.Translate("IPv4 Netzwerk: ") + GetLocalIP.ToString + Environment.NewLine + Sprachconverter.Translate("IPv6 Internet: ") + GetIP.ToString, MsgBoxStyle.OkOnly, "Deine IP")
            Case Else
                Dim modus As KAModi = KAModus
                MyBase.MouseUp(sender, e)
                If modus <> KAModus Then
                    Select Case KAModus
                        Case KAModi.RegelnFestlegen
                            LoeschenButton("Weiter")
                            NeuButton(DataSettings.BildschirmBreite - 138, DataSettings.BildschirmHoehe - 30, DataSettings.Resourcenpfad + "Objects\Button.png", "Netzwerk", New PointF(1, 1))
                            NeuButton(DataSettings.BildschirmBreite - 138, DataSettings.BildschirmHoehe - 60, DataSettings.Resourcenpfad + "Objects\Button.png", "Internet", New PointF(1, 1))
                            LoeschenButton("IP")
                            AddButton(DataSettings.BildschirmBreite - 138 * 2, Hauptmenue.Rechteck.Height - 30, DataSettings.Resourcenpfad + "Objects\Button.png", "IP", New PointF(0.5#, 1))
                    End Select
                End If
        End Select
    End Sub
    Private Sub btnWeiter()
        If KAModus = KAModi.Lobby Then
            ResetLobby()
        End If
        If Hauptmenue.Connection IsNot Nothing Then
            If Hauptmenue.Connection.Connected And KAModus <> KAModi.RegelnFestlegen Then
                Dim NotEnoughPlayer As Boolean = True
                Dim Checked As Boolean = False
                While Not Checked
                    Try
                        If Hauptmenue.Connection.Connected Then
                            NotEnoughPlayer = False
                        End If
                        Checked = True
                    Catch
                        Checked = False 'Repeat until access
                        Threading.Thread.Sleep(ThreadSleepTime)
                    End Try
                End While
                If Not NotEnoughPlayer Then
                    'hier koennten wir eigentlich sagen mindestens 2 Spieler, ich bleib der einfachkeit halber bei mindestens einem(Sobald man ein Spiel erstellt hat, ist man ja der eine, wenn man beitritt, sind es sogar mindestens zwei. :)
                    If Hauptmenue.Connection.Hosten Then
                        'Der Host hat alle Zugriffsrechte 
                        Weiter()
                        Select Case KAModus
                            Case KAModi.KartenAuswahl

                            Case KAModi.SpielerAuswahl

                            Case KAModi.RegelnFestlegen

                            Case KAModi.StartBereit
                                'Hauptmenue.NetzBefehlSenden(Hauptmenue.NetzVorbereitungen.Bereit)
                        End Select
                    Else 'wir sind kein Host wir kommen zur Spieler auswahl
                        If Not ErstesUpdateEmpfangen Or Not SpielInizialiesiert Or Not RuleRecieved Or Not FirstWeiter Then
                            FirstWeiter = True
                            While Not ErstesUpdateEmpfangen Or Not SpielInizialiesiert Or Not RuleRecieved 'wait until Data receive
                                Threading.Thread.Sleep(ThreadSleepTime * 10)
                            End While
                            For I = 1 To KIStufen.Length - 1
                                If KIStufen(I) = ObjektSpieler.KIStufen.Offen Then
                                    KIStufen(I) = ObjektSpieler.KIStufen.Mensch
                                    Spielerdaten(I - 1).SetKIstufe(ObjektSpieler.KIStufen.Mensch.ToString)
                                    Exit For
                                ElseIf I = KIStufen.Length - 1 Then
                                    Hauptmenue.Connection.Close(True)
                                End If
                            Next
                            KAModus = KAModi.SpielerAuswahl
                            If Hauptmenue.Connection.Hosten Then 'Only Host need this line
                                SpielerAuswahlErstellen()
                            Else 'A new Player joined the Game
                                If DataSettings.LobbyHost Then
                                    Hauptmenue.Lobby.JoinedGame(Hauptmenue.Lobby.CurrentGame.GameID, Hauptmenue.Lobby.ClientID)
                                Else
                                    If Hauptmenue.Lobby IsNot Nothing Then
                                        If Hauptmenue.Lobby.CurrentGame IsNot Nothing Then
                                            Hauptmenue.Lobby.Connection.SendData("JoinedGame:" + Hauptmenue.Lobby.CurrentGame.GameID.ToString + ":" + Hauptmenue.Lobby.ClientID.ToString)
                                        End If
                                    End If
                                End If
                            End If
                        Else
                            Select Case KAModus
                                Case KAModi.Lobby

                                Case KAModi.SpielerAuswahl
                                    NextPlayer(1)
                            End Select
                        End If
                    End If
                End If
            ElseIf KAModus = KAModi.RegelnFestlegen Then
                LoeschenButton("Netzwerk")
                LoeschenButton("Internet")
                NeuButton(DataSettings.BildschirmBreite - 138, DataSettings.BildschirmHoehe - 30, DataSettings.Resourcenpfad + "Objects\Button.png", "Weiter", New PointF(1, 1))
                Weiter()
                LoeschenButton("IP")
                AddButton(DataSettings.BildschirmBreite - 138 * 2, Hauptmenue.Rechteck.Height - 30, DataSettings.Resourcenpfad + "Objects\Button.png", "IP", New PointF(0.5#, 1))
            ElseIf KAModus = KAModi.KartenAuswahl Then
                If MomentaneKarte < AngezeigteKarten.Count Then
                    Weiter()
                    LoeschenButton("Weiter")
                    NeuButton(DataSettings.BildschirmBreite - 138, DataSettings.BildschirmHoehe - 30, DataSettings.Resourcenpfad + "Objects\Button.png", "Netzwerk", New PointF(1, 1))
                    NeuButton(DataSettings.BildschirmBreite - 138, DataSettings.BildschirmHoehe - 60, DataSettings.Resourcenpfad + "Objects\Button.png", "Internet", New PointF(1, 1))
                    LoeschenButton("IP")
                    AddButton(DataSettings.BildschirmBreite - 138 * 2, Hauptmenue.Rechteck.Height - 30, DataSettings.Resourcenpfad + "Objects\Button.png", "IP", New PointF(0.5#, 1))
                End If
            Else
                Hauptmenue.Ini(Hauptmenue.Formmodi.Hauptmenue)
            End If
        ElseIf KAModus = KAModi.RegelnFestlegen Then
            LoeschenButton("Netzwerk")
            LoeschenButton("Internet")
            NeuButton(DataSettings.BildschirmBreite - 138, DataSettings.BildschirmHoehe - 30, DataSettings.Resourcenpfad + "Objects\Button.png", "Weiter", New PointF(1, 1))
            Weiter()
            LoeschenButton("IP")
            AddButton(DataSettings.BildschirmBreite - 138 * 2, Hauptmenue.Rechteck.Height - 30, DataSettings.Resourcenpfad + "Objects\Button.png", "IP", New PointF(0.5#, 1))
        ElseIf KAModus = KAModi.KartenAuswahl Then
            Weiter()
            LoeschenButton("Weiter")
            NeuButton(DataSettings.BildschirmBreite - 138, DataSettings.BildschirmHoehe - 30, DataSettings.Resourcenpfad + "Objects\Button.png", "Netzwerk", New PointF(1, 1))
            NeuButton(DataSettings.BildschirmBreite - 138, DataSettings.BildschirmHoehe - 60, DataSettings.Resourcenpfad + "Objects\Button.png", "Internet", New PointF(1, 1))
        Else
            Hauptmenue.Ini(Hauptmenue.Formmodi.Hauptmenue)
        End If
    End Sub
    Private Sub btnZurueck()
        Select Case KAModus
            Case KAModi.Lobby
                If Not DataSettings.LobbyHost Then
                    If Hauptmenue.Lobby.Connection IsNot Nothing Then
                        Hauptmenue.Lobby.Connection.Close()
                    End If
                End If
                Hauptmenue.Ini(Hauptmenue.Formmodi.Hauptmenue)
            Case KAModi.KartenAuswahl
                ResetKartenAuswahl()
                IniLobby()
                LoeschenButton("IP")
                AddButton(DataSettings.BildschirmBreite - 138 * 2, Hauptmenue.Rechteck.Height - 30, DataSettings.Resourcenpfad + "Objects\Button.png", "IP", New PointF(0.5#, 1))
            Case KAModi.SpielerAuswahl
                LoeschenButton("Karte senden")
                LoeschenButton("Weiter")
                NeuButton(DataSettings.BildschirmBreite - 138, DataSettings.BildschirmHoehe - 30, DataSettings.Resourcenpfad + "Objects\Button.png", "Netzwerk", New PointF(1, 1))
                NeuButton(DataSettings.BildschirmBreite - 138, DataSettings.BildschirmHoehe - 60, DataSettings.Resourcenpfad + "Objects\Button.png", "Internet", New PointF(1, 1))
                If Hauptmenue.Connection.Hosten Then
                    Hauptmenue.Lobby.CancelGameFromLobby()
                    Hauptmenue.Connection.Close(False)
                    SpielInizialiesiert = False
                    ErstesUpdateEmpfangen = False
                    RuleRecieved = False
                    FirstWeiter = False
                    Zurueck()
                Else
                    If DataSettings.LobbyHost Then
                        If DataSettings.LobbyHost Then
                            Hauptmenue.Lobby.ExitGame(Hauptmenue.Lobby.CurrentGame.GameID, Hauptmenue.Lobby.ClientID)
                        Else
                            Hauptmenue.Lobby.Connection.SendData("ExitGame:" + Hauptmenue.Lobby.CurrentGame.GameID.ToString + ":" + Hauptmenue.Lobby.ClientID.ToString)
                        End If
                    End If
                    Hauptmenue.Connection.Close(False)
                    SpielInizialiesiert = False
                    ErstesUpdateEmpfangen = False
                    RuleRecieved = False
                    FirstWeiter = False
                    ResetSpielerAuswahl()
                    IniLobby()
                End If
                LoeschenButton("IP")
                AddButton(DataSettings.BildschirmBreite - 138 * 2, Hauptmenue.Rechteck.Height - 30, DataSettings.Resourcenpfad + "Objects\Button.png", "IP", New PointF(0.5#, 1))
            Case Else
                Zurueck()
                LoeschenButton("IP")
                AddButton(DataSettings.BildschirmBreite - 138 * 2, Hauptmenue.Rechteck.Height - 30, DataSettings.Resourcenpfad + "Objects\Button.png", "IP", New PointF(0.5#, 1))
        End Select
    End Sub
    Public Sub btnHosten()
        'So wir wollen ein Spiel erstellen.
        'Eigentlich sind wir in der Lobby naja jetzt noch nicht.
        'wir sagen einfach weiter 
        Host = True

        'Ich gehe davon aus, das alles geklappt hat und man hier auf jeden Fall in ein Spiel verwickelt ist.
        LoeschenButton("Beitreten")
        LoeschenButton("Erstellen")

        NeuButton(DataSettings.BildschirmBreite - 138, DataSettings.BildschirmHoehe - 30, DataSettings.Resourcenpfad + "Objects\Button.png", "Weiter", New PointF(1, 1))
        Weiter()
        LoeschenButton("IP")
        AddButton(DataSettings.BildschirmBreite - 138 * 2, Hauptmenue.Rechteck.Height - 30, DataSettings.Resourcenpfad + "Objects\Button.png", "IP", New PointF(0.5#, 1))
    End Sub
    ''' <summary>
    ''' Jetzt wird das Spiel erstellt
    ''' </summary>
    ''' <remarks></remarks>
    Private Sub Hosten(ByVal Local As Boolean)
        If Hauptmenue.Connection IsNot Nothing Then
            If Not Hauptmenue.Connection.Connected Then
                Hauptmenue.Connection.IniConnection(True, , Local)
                If Hauptmenue.Connection.Connected Then

                    Hauptmenue.Lobby.NewGameStarted()
                End If
            End If
        Else
            Hauptmenue.Connection = New GameConnection()
            If Not Hauptmenue.Connection.Connected Then
                Hauptmenue.Connection.IniConnection(True, , Local)
                If Hauptmenue.Connection.Connected Then
                    Hauptmenue.Lobby.NewGameStarted()
                End If
            End If
        End If
    End Sub
    Sub btnBeitreten()
        If Hauptmenue.Connection Is Nothing Then
            Hauptmenue.Connection = New GameConnection
        End If
        If Not Hauptmenue.Connection.Connected Then
            If Hauptmenue.Lobby.CurrentGame IsNot Nothing Then
                If Hauptmenue.Lobby.CurrentGame.Version = My.Application.Info.Version Then
                    If Hauptmenue.Lobby.CurrentGame.CurrentPlayers + 1 < Hauptmenue.Lobby.CurrentGame.MaxPlayers Then
                        If Hauptmenue.Connection.IniConnection(False, Hauptmenue.Lobby.CurrentGame.HostAdress) Then
                            Dim T As Long = Now.Ticks
                            While Not Hauptmenue.Connection.Connected
                                Threading.Thread.Sleep(ThreadSleepTime)
                                Dim T2 As Long = Now.Ticks
                                If T2 - T > TimeSpan.TicksPerSecond * 30 Then
                                    MessageBox.ShowMessageBox(Sprachconverter.Translate("Host nicht erreichbar!"), MsgBoxStyle.OkOnly, "Verbindungsfehler")
                                    Exit While
                                End If
                            End While
                            If Hauptmenue.Connection.Connected Then
                                btnWeiter()
                            End If
                        End If
                    End If
                End If
            Else
                If Hauptmenue.Connection.IniConnection(False) Then
                    Dim T As Long = Now.Ticks
                    While Not Hauptmenue.Connection.Connected
                        Threading.Thread.Sleep(ThreadSleepTime)
                        Dim T2 As Long = Now.Ticks
                        If T2 - T > TimeSpan.TicksPerSecond * 30 Then
                            MessageBox.ShowMessageBox(Sprachconverter.Translate("Host nicht erreichbar!"), MsgBoxStyle.OkOnly, "Verbindungsfehler")
                            Exit While
                        End If
                    End While
                    If Hauptmenue.Connection.Connected Then
                        btnWeiter()
                    End If
                Else
                    MessageBox.ShowMessageBox(Sprachconverter.Translate("Host nicht erreichbar!"), MsgBoxStyle.OkOnly, "Verbindungsfehler")
                End If
            End If
            'wir sind beigetreten 
        Else

        End If
    End Sub

    Public Overrides Sub MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
        MyBase.MouseWheel(sender, e)
        Select Case KAModus
            Case KAModi.Lobby, KAModi.SpielerAuswahl
                Hauptmenue.Chatroom.MouseWheel(sender, e)
        End Select
    End Sub

    Public Overrides Sub SetMausBild()
        ObjektMaus.Zustand = ObjektMaus.Zustaende.Menue
    End Sub

    Public Overrides Sub IniMenue()
        MyBase.IniMenue()
    End Sub

    Public Overrides Sub SprachEingabe(ByVal Eingabe As String)
        Select Case Eingabe.ToLower
            Case "weiter"
                btnWeiter()
            Case "zurueck"
                btnZurueck()
            Case "erstellen"
                btnHosten()
            Case "beitreten"
                btnBeitreten()
            Case Else
                MyBase.SprachEingabe(Eingabe)
        End Select
    End Sub
    Public Sub PruefenWeiter()
        If Beigetreten Then Exit Sub
        LoeschenButton("Beitreten")
        LoeschenButton("Erstellen")
        NeuButton(DataSettings.BildschirmBreite - 138, DataSettings.BildschirmHoehe - 30, DataSettings.Resourcenpfad + "Objects\Button.png", "Weiter", New PointF(1, 1))
        If Hauptmenue.Connection.Hosten Then
            NeuButton(DataSettings.BildschirmBreite - 138, DataSettings.BildschirmHoehe - 90, DataSettings.Resourcenpfad + "Objects\Button.png", "Karte senden", New PointF(1, 0))
        End If

        Beigetreten = True
    End Sub

    Public Sub Spielstartpruefen()
        Dim Startbereit As Boolean = True
        If Not Hauptmenue.Connection.IsGameReady Then
            Startbereit = False
        End If
        If Startbereit Then
            'We don't want to be shown anymore!
            Hauptmenue.Lobby.RemoveGameFromLobby()
            'Es sieht so aus, als ob wir starten koennen :)
            VorSpielstart() 'Noch ein paar letzte endgueltige Aenderungen und dann...
            Spielstart() '...Starten!
        End If
    End Sub

    Public Sub VorSpielstart()
        If Hauptmenue.Connection.Hosten Then
            'HOST:
            'Nothing
        Else
            'CLIENT:
            For I = 0 To KIStufen.Length - 1 'Beim Clienten gibt's nur 2 Moeglichkeiten. Entweder der Menschliche User steuert, oder es wird von einem anderen Computer aus gesteuert.
                If Not KIStufen(I) = ObjektSpieler.KIStufen.Mensch Then KIStufen(I) = ObjektSpieler.KIStufen.Passiv
            Next
        End If
    End Sub

    Protected Sub IniLobby()
        KAModus = KAModi.Lobby
        CustomStuffReceieved = False
        ResetButton()
        NeuButton(30, DataSettings.BildschirmHoehe - 30, DataSettings.Resourcenpfad + "Objects\Button.png", "Zurueck", New PointF(0, 1))
        'Weiter ist erst zu sehen, sobald Man entweder Hostet oder einem Spiel Beigetreten ist.
        NeuButton(DataSettings.BildschirmBreite - 138, DataSettings.BildschirmHoehe - 77, DataSettings.Resourcenpfad + "Objects\Button.png", "Beitreten", New PointF(1, 1))
        NeuButton(DataSettings.BildschirmBreite - 138, DataSettings.BildschirmHoehe - 30, DataSettings.Resourcenpfad + "Objects\Button.png", "Erstellen", New PointF(1, 1))
        LoeschenButton("IP")
        AddButton(DataSettings.BildschirmBreite - 138 * 2, Hauptmenue.Rechteck.Height - 30, DataSettings.Resourcenpfad + "Objects\Button.png", "IP", New PointF(0.5#, 1))

        Hauptmenue.Lobby.IniLobby()
        If Hauptmenue.Chatroom IsNot Nothing Then
            Hauptmenue.Chatroom.Top = True
            Hauptmenue.Chatroom.Chatmodus = Chat.Modus.Lobby
            Hauptmenue.Chatroom.CreateSubObjects()
        End If
    End Sub
    Protected Sub ResetLobby()
        ResetButton()

    End Sub

    Public Sub SetKIStufe(ByVal Spieler As Integer, ByVal KIStufe As ObjektSpieler.KIStufen)
        If Hauptmenue.Connection.Connected Then
            If Hauptmenue.Connection.Hosten Then
                'wir sind Host
                'Das heisst es kann nur ein offener Platz veraendert worden sein
                KIStufen(Spieler) = KIStufe
            Else
                'wir sind ein Client
                KIStufen(Spieler) = KIStufe
            End If
            'Jetzt noch alles Updaten
            For I = 0 To Spielerdaten.Length - 1
                If KIStufen(I + 1) = ObjektSpieler.KIStufen.Passiv Then
                    '  Spielerdaten(I).SetKIstufe(Sprachconverter.Translate("Mensch") + " ")
                    Spielerdaten(I).SetKIstufe(KIStufen(I + 1).ToString)
                Else
                    Spielerdaten(I).SetKIstufe(KIStufen(I + 1).ToString)
                End If
            Next
            If DropDownMenues.Length > 0 Then
                If Not DropDownMenues(0) Is Nothing Then
                    DropDownMenues(0).SetItems(GetSpielerItems)
                End If
            End If
        End If
    End Sub

    Public Sub SetBauliste(ByVal Spieler As Integer, ByVal Bauliste As Commander_Wars.Baulisten)
        If Spieler < 1 Then
            For I = 0 To Spielerdaten.Length - 1
                Spielerdaten(I).ChangeBauliste(Bauliste, Me)
            Next
        Else
            If Spielerdaten.Length >= Spieler Then
                Spielerdaten(Spieler - 1).ChangeBauliste(Bauliste, Me)
            Else
                If Bauliste >= 0 Then
                    Baulisten(Spieler - 1) = New Bauliste(ObjektLadeklasse.GetBauliste(Bauliste))
                End If
            End If
        End If
    End Sub

    Public Function KarteFestlegenHashcode(ByVal Map As ObjektSpielfeld, ByVal MapFile As String) As Boolean
        If SpielKarten IsNot Nothing Then
            For I = 0 To SpielKarten.Length - 1
                If Map.Equals(SpielKarten(I)) Then
                    KarteFestlegenAn(I)
                    Return True
                End If
            Next
        End If
        For Each Dat In My.Computer.FileSystem.GetFiles(DataSettings.Resourcenpfad + "Maps\", FileIO.SearchOption.SearchAllSubDirectories, "*.map")
            If MapFile <> Dat Then
                Dim S As ObjektSpielfeld = Hauptmenue.KarteDefaultLaden(Dat)
                If Map.Equals(S) Then
                    AddKarte(Dat)
                    If Not IsSpielInizialiesiert() Then
                        KarteFestlegenAn(Kartenname.Length - 1)
                    End If
                    Return True 'Wenn die Karte bereits existiert, koennen wir uns wichtigerem zuwenden.
                End If
            End If
        Next
        Return False
    End Function
    Public Sub KarteFestlegenAn(ByVal Stelle As Integer)

        FestlegenDerKarte(Stelle)

        SpielerAuswahlErstellen()
        SpielInizialiesiert = True
    End Sub
    Public Overrides Sub Reset()
        MyBase.Reset()
        Hauptmenue.Chatroom = Nothing
    End Sub

    Public Overrides Sub ChangeWindowSize(ByVal PosChange As System.Drawing.Point)
        MyBase.ChangeWindowSize(PosChange)
        Hauptmenue.Lobby.ChangeWindowSize(PosChange)
    End Sub
End Class